mint-001

3 Key Degrading Multisig

Motivation

The 2-of-3 multisig serves as a standard in multisignature solutions, offering a well-balanced combination of redundancy, security, flexibility, and practicality for securing Bitcoin. Loss of a single key does not spell disaster, and key distribution enhances security. Miniscript\'s time feature enables further disaster recovery. If two keys are lost, a timelock can convert the wallet to a 1-of-3 multisig. The proposal outlines four conditions through Miniscript\'s `thresh()`:

1. Key 1
2. Key 2
3. Key 3
4. Timelock (either relative or absolute)

Initially, the wallet requires 2-of-3 keys, functioning as a traditional 2-of-3 multisig. After the timelock expires, only one key is needed to spend the funds.

Timelock Values Note

Suggested Relative Block Height Timelocks: older(32800)

Suggested Relative Epoch Timelocks: older(4224679)

Below is a reference diagram on how the 3 Key Time Layered Multisig operates across time:

Example Miniscript Output Descriptors

3 Key Time Lock Multisig

Relative Blockheight Timelock

Policy:

thresh(2,pk(XPUB1),pk(XPUB2),pk(XPUB3),older(100))

Miniscript:

thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),sln:older(100))

Descriptor:

wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(100)))

Reference Testnet Transaction

Absolute Blockheight Timelock

Policy:

thresh(2,pk(XPUB1),pk(XPUB2),pk(XPUB3),older(2477600))

Miniscript:

thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),sln:older(2477600))

Descriptor:

wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:after(2477600)))

Reference Testnet Transaction

Absolute Epochtime Timelock

wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:after(1694563200)))

Reference Testnet Transaction

Relative Epochtime Timelock

wsh(thresh(2,pk(XPUB1),s:pk(XPUB2),s:pk(XPUB3),snl:older(4194400)))

Reference Testnet Transaction

(Future Addition: Taproot-based keyset for Minitapscript once integrated into Core)